package com.zb.mapper;

import com.zb.entity.AccounLoginInfo;
import com.zb.entity.SelectEmpVo;
import com.zb.entity.SelectVo;
import com.zb.result.PageUtil;
import com.zb.view.ViewNetworkEmpDetail;
import com.zb.vo.NetworkEmpListVo;
import com.zb.vo.NetworkEmpSelectVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;


/**
 * @Author WEN
 * @Date 2023/10/19 0019
 **/
@Repository
public interface ViewNetworkEmpDetailMapper {
    /**
     * 根据商家ID & 账号ID查询服务商ID
     * @param custAccId 商家ID
     * @param userName 账号姓名
     * @param userPhone 手机号
     * @return
     */
    List<Long> getNetworkId(@Param("custAccId") Long custAccId, @Param("userName") String userName, @Param("userPhone") String userPhone);

    /**
     * 根据服务商ID获取信息
     * @param networkIds 服务商ID
     * @return
     */
    List<ViewNetworkEmpDetail> getManagerByNetworkIds(@Param("networkIds") List<Long> networkIds);

    /**
     * 获取服务人员列表
     * @param custAccId 商家ID
     * @param selectVo 查询对象
     * @return
     */
    List<NetworkEmpListVo> getNetworkEmpList(@Param("custAccId") Long custAccId, @Param("selectVo") NetworkEmpSelectVo selectVo);

    /**
     * 获取服务人员列表总记录数
     * @param custAccId 商家ID
     * @param selectVo 查询对象
     * @return
     */
    long getNetworkEmpListCount(@Param("custAccId") Long custAccId, @Param("selectVo") NetworkEmpSelectVo selectVo);

    /**
     * 获取服务商详情之服务商人员列表
     * @param networkId 服务商ID
     * @param pageUtil
     * @return
     */
    List<ViewNetworkEmpDetail> getNetworkDetailEmpList(@Param("networkId") Long networkId, @Param("pageUtil") PageUtil pageUtil);

    /**
     * 获取服务商详情之服务商人员列表总记录数
     * @param networkId 服务商ID
     * @return
     */
    long getNetworkDetailEmpListCount(@Param("networkId") Long networkId);

    /**
     * 根据服务商ID获取服务商负责人
     * @param networkId 服务商ID
     * @return
     */
    ViewNetworkEmpDetail getManagerByNetworkId(@Param("networkId") Long networkId);

    /**
     * 根据服务商ID & 服务商人员ID查询关联服务人员信息
     * @param networkId 服务商ID
     * @param networkEmpId 服务商人员ID
     * @return
     */
    ViewNetworkEmpDetail getByNetworkIdAndNetworkEmpId(@Param("networkId") Long networkId, @Param("networkEmpId") Long networkEmpId);

    /**
     * 获取服务商人员下拉数据
     * @param networkId 服务商ID
     * @param selectVo 查询条件
     * @return
     */
    List<ViewNetworkEmpDetail> getNetworkEmpPageSelect(@Param("networkId") Long networkId, @Param("selectVo") SelectVo selectVo);

    /**
     * 获取服务商人员下拉数据总记录数
     * @param networkId 服务商ID
     * @param selectVo 查询条件
     * @return
     */
    long getNetworkEmpPageSelectCount(@Param("networkId") Long networkId, @Param("selectVo") SelectVo selectVo);

    /**
     * 根据账号ID获取账号所属信息
     * @param accountId 账号ID
     * @return
     */
    List<ViewNetworkEmpDetail> getByAccountId(@Param("accountId") Long accountId);

    /**
     * 根据服务商人员ID获取账号所属信息
     * @param networkEmpIds 服务商人员ID
     * @return
     */
    List<ViewNetworkEmpDetail> getByNetworkEmpIds(@Param("networkEmpIds") List<Long> networkEmpIds);

    /**
     * 根据商家ID获取服务商人员数据
     * @param custAccId 商家ID
     * @param selectVo 搜索条件
     * @return
     */
    List<ViewNetworkEmpDetail> getNetworkEmpAddressPageSelect(@Param("custAccId") Long custAccId, @Param("selectVo") SelectVo selectVo);

    /**
     * 根据商家ID获取服务商人员数据总记录数
     * @param custAccId 商家ID
     * @param selectVo 搜索条件
     * @return
     */
    long getNetworkEmpAddressPageSelectCount(@Param("custAccId") Long custAccId, @Param("selectVo") SelectVo selectVo);

    /**
     * 根据商家ID获取服务人员
     * @param custAccId 商家ID
     * @param selectVo 搜索条件
     * @return
     */
    List<ViewNetworkEmpDetail> getNetworkEmpSelect(@Param("custAccId") Long custAccId, @Param("selectVo") SelectVo selectVo);

    /**
     * 根据商家ID获取服务人员总记录数
     * @param custAccId 商家ID
     * @param selectVo 搜索条件
     * @return
     */
    long getNetworkEmpSelectCount(@Param("custAccId") Long custAccId, @Param("selectVo") SelectVo selectVo);

    /**
     * 根据服务商ID获取所有工程师
     * @param networkIds 服务商ID
     * @return
     */
    List<ViewNetworkEmpDetail> getByNetworkIds(@Param("networkIds") List<Long> networkIds);

}
